using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BlueFinity.mvNET.CoreObjects;

namespace fenk.Ventas
{
    
    public partial class ControlCaja : mvLibrary.BaseForm
    {
                public string controlarComprobante = "";
        public string auditarSobreComprobante = "";
        public ControlCaja()
        {
            InitializeComponent();
        }
        private void ControlCaja_Load(object sender, EventArgs e)
        {
            toolBox.Visible = false;
            if (CargarPendientes())
            {
                ReadFromList(1);
            }
        }
        private bool CargarPendientes()
        {
            Cursor = Cursors.WaitCursor;
            CallProgram("FA.CONTROL.CAJA.SEL", 1, 1);
            Cursor = Cursors.Default;
            if (_item.DCount(11) == 0)
            {
                MessageBox.Show("No hay comprobantes pendientes de control");
                button1.Enabled = false;
                return false;
            }
            else
            {
                button1.Enabled = true;
            }
            return true;
        }
        /// <summary>
        ///  Arma vista HTML en Pick y la guarda en disco
        /// </summary>
        /// <param name="tipoComprobante"></param>
        private void LeerComprobante(string tipoComprobante)
        {
            // limpiar variables
            AplicData.Contents = "";
            _item[4] = tipoComprobante;
            CallProgram("CONTROL.CAJA.NET", 1, 1);
            String report = AplicData.ToString;
            if (report == "ERROR")
            {
                report = "<HTML>" + DataBASIC.AM + "<p><p><p><H3><font color=red align=center>COMPROBANTE NO EXISTE</font><h1></html>" + DataBASIC.AM;
            }
            //else
            //{
                
            //}
            // guardar en disco
            try
            {
                using (StreamWriter sw = new StreamWriter("C:\\report.htm"))
                {
                    int a;
                    for (a = 1; a <= DataBASIC.Count(report, DataBASIC.AM); ++a)
                    {
                        sw.WriteLine(DataBASIC.Field(report, DataBASIC.AM, a));
                    }
                }
            }
            catch (IOException IOex)
            {
                MessageBox.Show(IOex.Message);
                return;
            }
     
        }
        private void CargarSobreComprobantes()
        {
             // remitos
            Remito1.Text = _item.get_Text(5, 1, 1);
            Remito2.Text = _item.get_Text(5, 2, 1);
            Remito3.Text = _item.get_Text(5, 3, 1);
            tabPage2.Text = "S/Remito " +Remito1.Text + " " + Remito2.Text + " " + Remito3.Text;
            // facturas
            Factura1.Text = _item.get_Text(6, 1, 1);
            Factura2.Text = _item.get_Text(6, 2, 1);
            Factura3.Text = _item.get_Text(6, 3, 1);
            tabPage3.Text = "S/Factura " + Factura1.Text + " " + Factura2.Text + " " + Factura3.Text;
            // pedidos
            Pedido1.Text = _item.get_Text(7, 1, 1);
            Pedido2.Text = _item.get_Text(7, 2, 1);
            Pedido3.Text = _item.get_Text(7, 3, 1);
            tabPage4.Text = "S/Pedido " + Pedido1.Text + " " + Pedido2.Text + " " + Pedido3.Text; 

        }
        /// <summary>
        /// Leer sobre comprobantes NC o FC
        /// </summary>
        /// <param name="factura"></param>
        private void LeerFactura(string factura)
        {
            _item[2] = factura;
            _item[12] = "SC";
            LeerComprobante("F");
            auditarSobreComprobante = factura;
            webBrowser3.Visible = true; 
            webBrowser3.Navigate("C:\\report.htm");
        }
        private void LeerRemito(string remito)
        {
            _item[2] = remito;
            _item[12] = "SC";
            LeerComprobante("R");
            auditarSobreComprobante = remito;
            webBrowser2.Visible = true;
            webBrowser2.Navigate("C:\\report.htm");
        }
        private void LeerPedido(string pedido)
        {
            _item[2] = pedido;
            _item[12] = "SC";
            LeerComprobante("P");
            auditarSobreComprobante = pedido;
            webBrowser4.Visible = true;
            webBrowser4.Navigate("C:\\report.htm");
        }
        /// <summary>
        /// Leer comprobrobante desde la lista de pendientes
        /// </summary>
        /// <param name="index"></param>
        private void ReadFromList(int index)
        {
            if (_item.DCount(11) == 0)
            {
                return;
            }
            selectLabel.Text = index.ToString()+ "/" + _item.DCount(11).ToString();
            _item[1] = _item[11, index];
            _item[2] = "";
            selectedLabel.Text = _item[1].ToString();
            string tipo = (_item[1].ToString().Substring(0, 1) == "P") ? "P" : "F";
            _item[12] = "";
            LeerComprobante(tipo);
            //
            controlarComprobante =  _item[2].ToString();
            auditarSobreComprobante = "";
            //
            CargarSobreComprobantes();
            webBrowser1.Navigate("C:\\report.htm");
            webBrowser2.DocumentText = "";
            webBrowser2.Visible = false;
            webBrowser3.DocumentText = "";
            webBrowser3.Visible = false;
            webBrowser4.DocumentText = "";
            webBrowser4.Visible = false;
            this.Text = "Comprobante " + InputValue;
            nextSelButton.Focus();
        }
       

        private void Factura1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (Factura1.Text != "")
            {
                LeerFactura(Factura1.Text);
            }
        }

        private void Factura2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (Factura2.Text != "")
            {
                LeerFactura(Factura2.Text);
            }
        }

        private void Factura3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (Factura3.Text != "")
            {
                LeerFactura(Factura3.Text);

            }
        }

        private void Remito1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (Remito1.Text != "")
            {
                LeerRemito(Remito1.Text);
            }
        }

        private void Remito2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (Remito2.Text != "")
            {
                LeerRemito(Remito2.Text);
            }
        }

        private void Remito3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (Remito3.Text != "")
            {
                LeerRemito(Remito3.Text);
            }
        }

        private void Pedido1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (Pedido1.Text != "")
            {
                LeerPedido(Pedido1.Text);
            }
        }

        private void Pedido2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (Pedido2.Text != "")
            {
                LeerPedido(Pedido2.Text);
            }
        }

        private void Pedido3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (Pedido3.Text != "")
            {
                LeerPedido(Pedido3.Text);
            }
        }

        private void tabPage2_Enter(object sender, EventArgs e)
        {
            // Al activarse por primera vez la solapa REMITOS lee directamente SC # 1
            if (Remito1.Text != "" & webBrowser2.DocumentText=="")
            {
                LeerRemito(Remito1.Text);
            }
           
        }

        private void tabPage3_Enter(object sender, EventArgs e)
        {
            // Al activarse por primera vez la solapa FACTURAS lee directamente SC # 1
            if (Factura1.Text != "" & webBrowser3.DocumentText == "")
            {
                LeerFactura(Factura1.Text);
            }
        }

        private void tabPage4_Enter(object sender, EventArgs e)
        {
            // Al activarse por primera vez la solapa PEDIDOS lee directamente SC # 1
            if (Pedido1.Text != "" & webBrowser4.DocumentText == "")
            {
                LeerPedido(Pedido1.Text);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Control del comprobante
            if (controlarComprobante != "")
            {
                DefaultValue = Microsoft.VisualBasic.Interaction.InputBox("Comentario (opcional)", controlarComprobante,"", -1, -1);
                InputValue = controlarComprobante;
                CallProgram("FA.CONTROL.CAJA", 1, 1);
                if (SubErr != "0")
                {
                   MessageBox.Show(ErrorMessage, "Control Caja");
                }
                // actualizar lista pendientes de control...
                if (CargarPendientes())
                {
                    ReadFromList(1);
                }
            }
        }
        private void prevSelButton_Click(object sender, EventArgs e)
        {
            // anterior comprobante de la lista
            if (DataBASIC.Field(selectLabel.Text,"/",1) == "1") return;
            int index;
            try
            {
                index = Convert.ToInt32(DataBASIC.Field(selectLabel.Text,"/",1));
            }
            catch
            {
                index = 1;
            }
            ReadFromList(--index);
        }

        private void nextSelButton_Click(object sender, EventArgs e)
        {
            int index;
            try
            {
                index = Convert.ToInt32(DataBASIC.Field(selectLabel.Text, "/", 1));
            }
            catch
            {
                index = 1;
            }
            if (index+1 <= _item.DCount(11))
            {
                ReadFromList(++index);
            }
        }

        private void firstSelButton_Click(object sender, EventArgs e)
        {
            ReadFromList(1);
        }

        private void lastSelButton_Click(object sender, EventArgs e)
        {
            ReadFromList(_item.DCount(11));
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (CargarPendientes())
            {
                ReadFromList(1);
            }
        }

        
  
   }
}

